home *** CD-ROM | disk | FTP | other *** search
- /*
- * Key Map Editor ver 1.0
- * Process Gadget
- *
- * parameter: Gadget - Address of Gadget selected
- *
- * by: Tim Friest
- * on: January 1, 1989
- */
-
- #include "KME_Includes.h"
- #include "KME_Protos.h"
- #include "KME_Defs.h"
- #include "KME_Globals.h"
-
- extern int CopyKey(struct KeyMap *, USHORT, USHORT);
- extern void MoveKey(struct KeyMap *, USHORT, USHORT);
- extern void SwapKeys(struct KeyMap *, USHORT, USHORT);
- extern void ClearKey(struct KeyMap *, USHORT);
-
- void ProcGadget(Gad)
- struct Gadget *Gad;
- {
- int OldStatus;
-
- switch (Gad->GadgetID) {
- case 0x60: /* Shift Key Toggled */
- case 0x61:
- OldStatus = CheckFlag(SF_Shift);
- if ((LeftShiftGadget.Flags & SELECTED) || (RightShiftGadget.Flags & SELECTED))
- SetFlag(SF_Shift);
- else
- ClearFlag(SF_Shift);
- if (OldStatus != (CheckFlag(SF_Shift)))
- UpdateDisplay(GadgetList, KeyMapNode, TRUE);
- break;
- case 0x62: /* Caps Lock Key Toggled */
- OldStatus = CheckFlag(SF_CapsLock);
- if (Gad->Flags & SELECTED)
- SetFlag(SF_CapsLock);
- else
- ClearFlag(SF_CapsLock);
- if (!(CheckFlag(SF_Shift)) && (OldStatus != (CheckFlag(SF_CapsLock))))
- UpdateDisplay(GadgetList, KeyMapNode, TRUE);
- break;
- case 0x63: /* Control Key Toggled */
- OldStatus = CheckFlag(SF_Control);
- if (Gad->Flags & SELECTED)
- SetFlag(SF_Control);
- else
- ClearFlag(SF_Control);
- if (OldStatus != (CheckFlag(SF_Control)))
- UpdateDisplay(GadgetList, KeyMapNode, TRUE);
- break;
- case 0x64: /* Alt Key Toggled */
- case 0x65:
- OldStatus = CheckFlag(SF_Alt);
- if ((LeftAltGadget.Flags & SELECTED) || (RightAltGadget.Flags & SELECTED))
- SetFlag(SF_Alt);
- else
- ClearFlag(SF_Alt);
- if (OldStatus != (CheckFlag(SF_Alt)))
- UpdateDisplay(GadgetList, KeyMapNode, TRUE);
- break;
- default:
- switch (StatusFlags & (SF_Define|SF_Copy|SF_Move|SF_Swap|SF_Clear)) {
- case SF_Define:
- if (ProcKeyReq(Gad->GadgetID))
- UpdateDisplay(Gad, KeyMapNode, FALSE);
- break;
- case SF_Copy:
- if (FromKeyGad == NULL) {
- FromKeyGad = Gad;
- ChangePointer(-1);
- }
- else {
- if (FromKeyGad != Gad) {
- CopyKey(&KeyMapNode->kn_KeyMap, FromKeyGad->GadgetID, Gad->GadgetID);
- UpdateDisplay(Gad, KeyMapNode, FALSE);
- }
- ChangePointer(SF_Copy);
- FromKeyGad = NULL;
- }
- break;
- case SF_Move:
- if (FromKeyGad == NULL) {
- FromKeyGad = Gad;
- ChangePointer(-1);
- }
- else {
- if (FromKeyGad != Gad) {
- MoveKey(&KeyMapNode->kn_KeyMap, FromKeyGad->GadgetID, Gad->GadgetID);
- UpdateDisplay(FromKeyGad, KeyMapNode, FALSE);
- UpdateDisplay(Gad, KeyMapNode, FALSE);
- }
- ChangePointer(SF_Move);
- FromKeyGad = NULL;
- }
- break;
- case SF_Swap:
- if (FromKeyGad == NULL) {
- FromKeyGad = Gad;
- ChangePointer(-1);
- }
- else {
- if (FromKeyGad != Gad) {
- SwapKeys(&KeyMapNode->kn_KeyMap, FromKeyGad->GadgetID, Gad->GadgetID);
- UpdateDisplay(FromKeyGad, KeyMapNode, FALSE);
- UpdateDisplay(Gad, KeyMapNode, FALSE);
- }
- ChangePointer(SF_Swap);
- FromKeyGad = NULL;
- }
- break;
- case SF_Clear:
- ClearKey(&KeyMapNode->kn_KeyMap, Gad->GadgetID);
- UpdateDisplay(Gad, KeyMapNode, FALSE);
- } /* switch */
- } /* switch */
- }
-
- /*
- * Copy Key
- *
- * Parameters: KeyMap - KeyMap to work with
- * FromKeyCode - Key Code to copy from
- * ToKeyCode - Key Code to copy to
- */
- int CopyKey(KeyMap, FromKey, ToKey)
- struct KeyMap *KeyMap;
- unsigned short FromKey;
- unsigned short ToKey;
- {
- struct HalfKeyMap *FromHalfKeyMap, *ToHalfKeyMap;
- int len;
- UBYTE headerlen;
-
- if (FromKey < 0x40)
- FromHalfKeyMap = (struct HalfKeyMap *)KeyMap;
- else {
- FromHalfKeyMap = (struct HalfKeyMap *)&KeyMap->km_HiKeyMapTypes;
- FromKey -= 0x40;
- }
- if (ToKey < 0x40)
- ToHalfKeyMap = (struct HalfKeyMap *)KeyMap;
- else {
- ToHalfKeyMap = (struct HalfKeyMap *)&KeyMap->km_HiKeyMapTypes;
- ToKey -= 0x40;
- }
-
- switch (FromHalfKeyMap->KeyMapTypes[FromKey] & (KCF_STRING|KCF_DEAD|KCF_NOP)) {
- case KC_NOQUAL:
- case KCF_NOP:
- ToHalfKeyMap->KeyMap[ToKey] = FromHalfKeyMap->KeyMap[FromKey];
- break;
- case KCF_STRING:
- len = StringKeyLength(FromHalfKeyMap, FromKey, &headerlen);
- if ((ToHalfKeyMap->KeyMap[ToKey] = (ULONG)AllocMem(len, MEMF_CLEAR)) == NULL) {
- Write(Output(), "Memory Allocation Failed, CopyKey:String\n", 41);
- return(FALSE);
- }
- CopyStringKey(FromHalfKeyMap, FromKey, (UBYTE *)ToHalfKeyMap->KeyMap[ToKey], headerlen);
- break;
- case KCF_DEAD:
- len = DeadKeyLength(FromHalfKeyMap, FromKey, &headerlen);
- if ((ToHalfKeyMap->KeyMap[ToKey] = (ULONG)AllocMem(len, MEMF_CLEAR)) == NULL) {
- Write(Output(), "Memory Allocation Failed, CopyKey:Dead\n", 39);
- return(FALSE);
- }
- CopyDeadKey(FromHalfKeyMap, FromKey, (UBYTE *)ToHalfKeyMap->KeyMap[ToKey], headerlen);
- } /* switch */
- ToHalfKeyMap->KeyMapTypes[ToKey] = FromHalfKeyMap->KeyMapTypes[FromKey];
- ToHalfKeyMap->Capsable[ToKey/8] &= ~(ToKey % 8);
- ToHalfKeyMap->Capsable[ToKey/8] |= (FromHalfKeyMap->Capsable[FromKey/8] & (FromKey % 8));
- ToHalfKeyMap->Repeatable[ToKey/8] &= ~(ToKey % 8);
- ToHalfKeyMap->Repeatable[ToKey/8] |= (FromHalfKeyMap->Repeatable[FromKey/8] & (FromKey % 8));
- SetFlag(SF_Modified);
- return(TRUE);
- }
-
- /*
- * Move Key
- *
- * Parameters: KeyMap - KeyMap to work with
- * FromKeyCode - Key Code to move from
- * ToKeyCode - Key Code to move to
- */
- void MoveKey(KeyMap, FromKey, ToKey)
- struct KeyMap *KeyMap;
- unsigned short FromKey;
- unsigned short ToKey;
- {
- struct HalfKeyMap *FromHalfKeyMap, *ToHalfKeyMap;
-
- if (FromKey < 0x40)
- FromHalfKeyMap = (struct HalfKeyMap *)KeyMap;
- else {
- FromHalfKeyMap = (struct HalfKeyMap *)&KeyMap->km_HiKeyMapTypes;
- FromKey -= 0x40;
- }
- if (ToKey < 0x40)
- ToHalfKeyMap = (struct HalfKeyMap *)KeyMap;
- else {
- ToHalfKeyMap = (struct HalfKeyMap *)&KeyMap->km_HiKeyMapTypes;
- ToKey -= 0x40;
- }
-
- ToHalfKeyMap->KeyMapTypes[ToKey] = FromHalfKeyMap->KeyMapTypes[FromKey];
- ToHalfKeyMap->KeyMap[ToKey] = FromHalfKeyMap->KeyMap[FromKey];
- ToHalfKeyMap->Capsable[ToKey/8] &= ~(ToKey % 8);
- ToHalfKeyMap->Capsable[ToKey/8] |= (FromHalfKeyMap->Capsable[FromKey/8] & (FromKey % 8));
- ToHalfKeyMap->Repeatable[ToKey/8] &= ~(ToKey % 8);
- ToHalfKeyMap->Repeatable[ToKey/8] |= (FromHalfKeyMap->Repeatable[FromKey/8] & (FromKey % 8));
-
- FromHalfKeyMap->KeyMapTypes[FromKey] = KCF_NOP;
- FromHalfKeyMap->KeyMap[FromKey] = NULL;
- FromHalfKeyMap->Capsable[FromKey/8] &= ~(FromKey % 8);
- FromHalfKeyMap->Repeatable[FromKey/8] &= ~(FromKey % 8);
- SetFlag(SF_Modified);
- }
-
- /*
- * Swap Key
- *
- * Parameters: KeyMap - KeyMap to work with
- * FromKeyCode - Key Code to swap from
- * ToKeyCode - Key Code to swap to
- */
- void SwapKeys(KeyMap, FromKey, ToKey)
- struct KeyMap *KeyMap;
- unsigned short FromKey;
- unsigned short ToKey;
- {
- struct HalfKeyMap *FromHalfKeyMap, *ToHalfKeyMap;
- UBYTE temptype, tempcaps, temprepeat;
- ULONG tempmap;
-
- if (FromKey < 0x40)
- FromHalfKeyMap = (struct HalfKeyMap *)KeyMap;
- else {
- FromHalfKeyMap = (struct HalfKeyMap *)&KeyMap->km_HiKeyMapTypes;
- FromKey -= 0x40;
- }
- if (ToKey < 0x40)
- ToHalfKeyMap = (struct HalfKeyMap *)KeyMap;
- else {
- ToHalfKeyMap = (struct HalfKeyMap *)&KeyMap->km_HiKeyMapTypes;
- ToKey -= 0x40;
- }
-
- temptype = ToHalfKeyMap->KeyMapTypes[ToKey];
- tempmap = ToHalfKeyMap->KeyMap[ToKey];
- tempcaps = ToHalfKeyMap->Capsable[ToKey/8] & (ToKey % 8);
- temprepeat = ToHalfKeyMap->Repeatable[ToKey/8] & (ToKey % 8);
-
- ToHalfKeyMap->KeyMapTypes[ToKey] = FromHalfKeyMap->KeyMapTypes[FromKey];
- ToHalfKeyMap->KeyMap[ToKey] = FromHalfKeyMap->KeyMap[FromKey];
- ToHalfKeyMap->Capsable[ToKey/8] &= ~(ToKey % 8);
- ToHalfKeyMap->Capsable[ToKey/8] |= (FromHalfKeyMap->Capsable[FromKey/8] & (FromKey % 8));
- ToHalfKeyMap->Repeatable[ToKey/8] &= ~(ToKey % 8);
- ToHalfKeyMap->Repeatable[ToKey/8] |= (FromHalfKeyMap->Repeatable[FromKey/8] & (FromKey % 8));
-
- FromHalfKeyMap->KeyMapTypes[FromKey] = temptype;
- FromHalfKeyMap->KeyMap[FromKey] = tempmap;
- FromHalfKeyMap->Capsable[FromKey/8] &= ~(FromKey % 8);
- FromHalfKeyMap->Capsable[FromKey/8] |= tempcaps;
- FromHalfKeyMap->Repeatable[FromKey/8] &= ~(FromKey % 8);
- FromHalfKeyMap->Repeatable[FromKey/8] |= temprepeat;
- SetFlag(SF_Modified);
- }
-
- /*
- * Clear Key
- *
- * parameters: KeyMap - Key Map to work with
- * KeyCode - KeyCode to erase
- */
- void ClearKey(KeyMap, KeyCode)
- struct KeyMap *KeyMap;
- unsigned short KeyCode;
- {
- struct HalfKeyMap *HalfKeyMap;
- int len;
- UBYTE headerlen;
-
- if (KeyCode < 0x40)
- HalfKeyMap = (struct HalfKeyMap *)KeyMap;
- else {
- HalfKeyMap = (struct HalfKeyMap *)&KeyMap->km_HiKeyMapTypes;
- KeyCode -= 0x40;
- }
-
- switch (HalfKeyMap->KeyMapTypes[KeyCode] & (KCF_STRING|KCF_DEAD|KCF_NOP)) {
- case KCF_STRING:
- len = StringKeyLength(HalfKeyMap, KeyCode, &headerlen);
- FreeMem((UBYTE *)HalfKeyMap->KeyMap[KeyCode], len);
- break;
- case KCF_DEAD:
- len = DeadKeyLength(HalfKeyMap, KeyCode, &headerlen);
- FreeMem((UBYTE *)HalfKeyMap->KeyMap[KeyCode], len);
- } /* switch */
- HalfKeyMap->KeyMap[KeyCode] = NULL;
- HalfKeyMap->KeyMapTypes[KeyCode] = KCF_NOP;
- HalfKeyMap->Capsable[KeyCode/8] &= ~(KeyCode % 8);
- HalfKeyMap->Repeatable[KeyCode/8] &= ~(KeyCode % 8);
- SetFlag(SF_Modified);
- }
-
- /*
- * String Key Length
- *
- * parameters: HalfKeyMap - half of a key map structure
- * KeyCode - Key Code
- * HeaderLen - Location to place header length
- *
- * returns: Length - length of key buffer
- */
- UBYTE StringKeyLength(HalfKeyMap, KeyCode, HeaderLength)
- struct HalfKeyMap *HalfKeyMap;
- USHORT KeyCode;
- UBYTE *HeaderLength;
- {
- UBYTE KeyType;
- UBYTE *KeyMapPtr;
- UBYTE len, index;
-
- KeyType = HalfKeyMap->KeyMapTypes[KeyCode];
- KeyMapPtr = (UBYTE *)HalfKeyMap->KeyMap[KeyCode];
-
- len = 2 + KeyMapPtr[index = 0];
- if (KeyType & KCF_SHIFT)
- len += 2 + KeyMapPtr[index += 2];
- if (KeyType & KCF_ALT)
- len += 2 + KeyMapPtr[index += 2];
- if ((KeyType & (KCF_SHIFT|KCF_ALT)) == (KCF_SHIFT|KCF_ALT))
- len += 2 + KeyMapPtr[index += 2];
- if (KeyType & KCF_CONTROL)
- len += 2 + KeyMapPtr[index += 2];
- if ((KeyType & (KCF_CONTROL|KCF_SHIFT)) == (KCF_CONTROL|KCF_SHIFT))
- len += 2 + KeyMapPtr[index += 2];
- if ((KeyType & (KCF_CONTROL|KCF_ALT)) == (KCF_CONTROL|KCF_ALT))
- len += 2 + KeyMapPtr[index += 2];
- if ((KeyType & KC_VANILLA) == KC_VANILLA)
- len += 2 + KeyMapPtr[index += 2];
- *HeaderLength = index + 2;
- return(len);
- }
-
- /*
- * Copy String Key
- *
- * parameters: HalfKeyMap - Half of a key map
- * KeyCode - Key Code
- * KeyBuff - location to place key data
- * Header - length of key data header
- *
- * returns: Length - length copied
- */
- UBYTE CopyStringKey(HalfKeyMap, KeyCode, KeyBuff, HeaderLength)
- struct HalfKeyMap *HalfKeyMap;
- USHORT KeyCode;
- UBYTE *KeyBuff;
- UBYTE HeaderLength;
- {
- UBYTE KeyType;
- UBYTE *KeyMapPtr;
- UBYTE len, index;
-
- KeyType = HalfKeyMap->KeyMapTypes[KeyCode];
- KeyMapPtr = (UBYTE *)HalfKeyMap->KeyMap[KeyCode];
-
- len = HeaderLength;
- KeyBuff[index = 0] = KeyMapPtr[index];
- KeyBuff[index+1] = len;
- memcpy(&KeyBuff[len], (KeyMapPtr+KeyMapPtr[index+1]), KeyMapPtr[index]);
- len += KeyBuff[index];
- if (KeyType & KCF_SHIFT) {
- KeyBuff[index += 2] = KeyMapPtr[index];
- KeyBuff[index+1] = len;
- memcpy(&KeyBuff[len], (KeyMapPtr+KeyMapPtr[index+1]), KeyMapPtr[index]);
- len += KeyBuff[index];
- }
- if (KeyType & KCF_ALT) {
- KeyBuff[index += 2] = KeyMapPtr[index];
- KeyBuff[index+1] = len;
- memcpy(&KeyBuff[len], (KeyMapPtr+KeyMapPtr[index+1]), KeyMapPtr[index]);
- len += KeyBuff[index];
- }
- if ((KeyType & (KCF_SHIFT|KCF_ALT)) == (KCF_SHIFT|KCF_ALT)) {
- KeyBuff[index += 2] = KeyMapPtr[index];
- KeyBuff[index+1] = len;
- memcpy(&KeyBuff[len], (KeyMapPtr+KeyMapPtr[index+1]), KeyMapPtr[index]);
- len += KeyBuff[index];
- }
- if (KeyType & KCF_CONTROL) {
- KeyBuff[index += 2] = KeyMapPtr[index];
- KeyBuff[index+1] = len;
- memcpy(&KeyBuff[len], (KeyMapPtr+KeyMapPtr[index+1]), KeyMapPtr[index]);
- len += KeyBuff[index];
- }
- if ((KeyType & (KCF_CONTROL|KCF_SHIFT)) == (KCF_CONTROL|KCF_SHIFT)) {
- KeyBuff[index += 2] = KeyMapPtr[index];
- KeyBuff[index+1] = len;
- memcpy(&KeyBuff[len], (KeyMapPtr+KeyMapPtr[index+1]), KeyMapPtr[index]);
- len += KeyBuff[index];
- }
- if ((KeyType & (KCF_CONTROL|KCF_ALT)) == (KCF_CONTROL|KCF_ALT)) {
- KeyBuff[index += 2] = KeyMapPtr[index];
- KeyBuff[index+1] = len;
- memcpy(&KeyBuff[len], (KeyMapPtr+KeyMapPtr[index+1]), KeyMapPtr[index]);
- len += KeyBuff[index];
- }
- if ((KeyType & KC_VANILLA) == KC_VANILLA) {
- KeyBuff[index += 2] = KeyMapPtr[index];
- KeyBuff[index+1] = len;
- memcpy(&KeyBuff[len], (KeyMapPtr+KeyMapPtr[index+1]), KeyMapPtr[index]);
- len += KeyBuff[index];
- }
- return(len);
- }
-
- /*
- * Dead Key Length
- *
- * parameters: HalfKeyMap - half of a key map structure
- * KeyCode - Key Code
- * HeaderLength - Location to place header length
- *
- * returns: Length - length of key buffer
- */
- UBYTE DeadKeyLength(HalfKeyMap, KeyCode, HeaderLength)
- struct HalfKeyMap *HalfKeyMap;
- USHORT KeyCode;
- UBYTE *HeaderLength;
- {
- UBYTE KeyType;
- UBYTE *KeyMapPtr;
- UBYTE len, index;
-
- KeyType = HalfKeyMap->KeyMapTypes[KeyCode];
- KeyMapPtr = (UBYTE *)HalfKeyMap->KeyMap[KeyCode];
-
- switch (KeyMapPtr[index = 0]) {
- case KC_NOQUAL:
- case DPF_DEAD:
- len = 2;
- break;
- case DPF_MOD:
- len = 2 + 6;
- } /* switch */
- if (KeyType & KCF_SHIFT)
- switch (KeyMapPtr[index += 2]) {
- case KC_NOQUAL:
- case DPF_DEAD:
- len += 2;
- break;
- case DPF_MOD:
- len += 2 + 6;
- } /* switch */
- if (KeyType & KCF_ALT)
- switch (KeyMapPtr[index += 2]) {
- case KC_NOQUAL:
- case DPF_DEAD:
- len += 2;
- break;
- case DPF_MOD:
- len += 2 + 6;
- } /* switch */
- if ((KeyType & (KCF_SHIFT|KCF_ALT)) == (KCF_SHIFT|KCF_ALT))
- switch (KeyMapPtr[index += 2]) {
- case KC_NOQUAL:
- case DPF_DEAD:
- len += 2;
- break;
- case DPF_MOD:
- len += 2 + 6;
- } /* switch */
- if (KeyType & KCF_CONTROL)
- switch (KeyMapPtr[index += 2]) {
- case KC_NOQUAL:
- case DPF_DEAD:
- len += 2;
- break;
- case DPF_MOD:
- len += 2 + 6;
- } /* switch */
- if ((KeyType & (KCF_CONTROL|KCF_SHIFT)) == (KCF_CONTROL|KCF_SHIFT))
- switch (KeyMapPtr[index += 2]) {
- case KC_NOQUAL:
- case DPF_DEAD:
- len += 2;
- break;
- case DPF_MOD:
- len += 2 + 6;
- } /* switch */
- if ((KeyType & (KCF_CONTROL|KCF_ALT)) == (KCF_CONTROL|KCF_ALT))
- switch (KeyMapPtr[index += 2]) {
- case KC_NOQUAL:
- case DPF_DEAD:
- len += 2;
- break;
- case DPF_MOD:
- len += 2 + 6;
- } /* switch */
- if ((KeyType & KC_VANILLA) == KC_VANILLA)
- switch (KeyMapPtr[index += 2]) {
- case KC_NOQUAL:
- case DPF_DEAD:
- len += 2;
- break;
- case DPF_MOD:
- len += 2 + 6;
- } /* switch */
- *HeaderLength = index + 2;
- return(len);
- }
-
- /*
- * Copy Dead Key
- *
- * parameters: HalfKeyMap - Half of a key map
- * KeyCode - Key Code
- * KeyBuff - location to place key data
- * HeaderLength - length of key data header
- *
- * returns: Length - length copied
- */
- UBYTE CopyDeadKey(HalfKeyMap, KeyCode, KeyBuff, HeaderLength)
- struct HalfKeyMap *HalfKeyMap;
- USHORT KeyCode;
- UBYTE *KeyBuff;
- UBYTE HeaderLength;
- {
- UBYTE KeyType;
- UBYTE *KeyMapPtr;
- UBYTE len, index;
-
- KeyType = HalfKeyMap->KeyMapTypes[KeyCode];
- KeyMapPtr = (UBYTE *)HalfKeyMap->KeyMap[KeyCode];
-
- len = HeaderLength;
- switch (KeyBuff[index = 0] = KeyMapPtr[index]) {
- case KC_NOQUAL:
- case DPF_DEAD:
- KeyBuff[index+1] = KeyMapPtr[index+1];
- break;
- case DPF_MOD:
- KeyBuff[index+1] = len;
- memcpy(&KeyBuff[len], (KeyMapPtr+KeyMapPtr[index+1]), 6);
- len += 6;
- } /* switch */
- if (KeyType & KCF_SHIFT)
- switch (KeyBuff[index += 2] = KeyMapPtr[index]) {
- case KC_NOQUAL:
- case DPF_DEAD:
- KeyBuff[index+1] = KeyMapPtr[index+1];
- break;
- case DPF_MOD:
- KeyBuff[index+1] = len;
- memcpy(&KeyBuff[len], (KeyMapPtr+KeyMapPtr[index+1]), 6);
- len += 6;
- } /* switch */
- if (KeyType & KCF_ALT)
- switch (KeyBuff[index += 2] = KeyMapPtr[index]) {
- case KC_NOQUAL:
- case DPF_DEAD:
- KeyBuff[index+1] = KeyMapPtr[index+1];
- break;
- case DPF_MOD:
- KeyBuff[index+1] = len;
- memcpy(&KeyBuff[len], (KeyMapPtr+KeyMapPtr[index+1]), 6);
- len += 6;
- } /* switch */
- if ((KeyType & (KCF_SHIFT|KCF_ALT)) == (KCF_SHIFT|KCF_ALT))
- switch (KeyBuff[index += 2] = KeyMapPtr[index]) {
- case KC_NOQUAL:
- case DPF_DEAD:
- KeyBuff[index+1] = KeyMapPtr[index+1];
- break;
- case DPF_MOD:
- KeyBuff[index+1] = len;
- memcpy(&KeyBuff[len], (KeyMapPtr+KeyMapPtr[index+1]), 6);
- len += 6;
- } /* switch */
- if (KeyType & KCF_CONTROL)
- switch (KeyBuff[index += 2] = KeyMapPtr[index]) {
- case KC_NOQUAL:
- case DPF_DEAD:
- KeyBuff[index+1] = KeyMapPtr[index+1];
- break;
- case DPF_MOD:
- KeyBuff[index+1] = len;
- memcpy(&KeyBuff[len], (KeyMapPtr+KeyMapPtr[index+1]), 6);
- len += 6;
- } /* switch */
- if ((KeyType & (KCF_CONTROL|KCF_SHIFT)) == (KCF_CONTROL|KCF_SHIFT))
- switch (KeyBuff[index += 2] = KeyMapPtr[index]) {
- case KC_NOQUAL:
- case DPF_DEAD:
- KeyBuff[index+1] = KeyMapPtr[index+1];
- break;
- case DPF_MOD:
- KeyBuff[index+1] = len;
- memcpy(&KeyBuff[len], (KeyMapPtr+KeyMapPtr[index+1]), 6);
- len += 6;
- } /* switch */
- if ((KeyType & (KCF_CONTROL|KCF_ALT)) == (KCF_CONTROL|KCF_ALT))
- switch (KeyBuff[index += 2] = KeyMapPtr[index]) {
- case KC_NOQUAL:
- case DPF_DEAD:
- KeyBuff[index+1] = KeyMapPtr[index+1];
- break;
- case DPF_MOD:
- KeyBuff[index+1] = len;
- memcpy(&KeyBuff[len], (KeyMapPtr+KeyMapPtr[index+1]), 6);
- len += 6;
- } /* switch */
- if ((KeyType & KC_VANILLA) == KC_VANILLA)
- switch (KeyBuff[index += 2] = KeyMapPtr[index]) {
- case KC_NOQUAL:
- case DPF_DEAD:
- KeyBuff[index+1] = KeyMapPtr[index+1];
- break;
- case DPF_MOD:
- KeyBuff[index+1] = len;
- memcpy(&KeyBuff[len], (KeyMapPtr+KeyMapPtr[index+1]), 6);
- len += 6;
- } /* switch */
- return(len);
- }
-